package com.gl.battleship.services;

import java.util.List;

import com.gl.battleship.domain.Notification;
import com.gl.battleship.domain.UserState;
import com.gl.battleship.domain.exceptions.PlayerException;
import com.gl.battleship.services.exceptions.GameException;
import com.gl.battleship.services.exceptions.NotificationException;
import com.gl.battleship.services.exceptions.UserException;

public interface IBattleshipServices {

	public String login(String user, String password) throws UserException;

	public String logOut(String securityToken) throws UserException, GameException;
	
	public List<String> getUsersByState(String securityToken,UserState userState) throws UserException;
	
	public String declareWar(String securityToken, String opponent) throws UserException, PlayerException, GameException ;
	
	public String acceptWar(String securityToken, String warToken) throws UserException,GameException, PlayerException;
	
	public String refuseWar(String securityToken, String warToken) throws UserException,GameException, PlayerException;
	
	public String retiredWar(String nick) throws GameException;

	public String validateFleet(String securityToken, String warToken, String fleet) throws UserException, GameException, PlayerException;
	
	public String shoot(String securityToken, String warToken, int x, String y) throws UserException, GameException, PlayerException; 		

	public List<String> getActiveUsers() throws UserException;	
	
	public List<Notification> getNotification(String nick) throws UserException, NotificationException;
	
	public List<Notification> getNotificationState(String nick, String state) throws UserException;

}
